package com.cy.kotlin2test

open class ParentKt {
    constructor(){
        println("父类--构造器")
    }

    // 初始化块      
    init {
        println("父类--初始化块1")
    }
    // 变量
    var p_Field: TestFather = TestFather(1)

    // 构造器      
    init {
        println("父类--初始化块2")
    }



    class SubClassKt : ParentKt {
        constructor(){
            println("子类--构造器")
        }
        // 变量
        var s_Field: TestSon = TestSon(1)

        // 初始化块
        init {
            println("子类--初始化块")
        }

        companion object {
            // 静态变量
            var s_StaticField: TestSon = TestSon()

            // 静态初始化块
            init {
                println("子类--静态初始化块")
            }
        }
    }

    class TestFather {
        constructor() {
            println("父类--静态变量")
        }

        constructor(a: Int) {
            println("父类--变量")
        }
    }

    class TestSon {
        constructor() {
            println("子类--静态变量")
        }

        constructor(a: Int) {
            println("子类--变量")
        }
    }

    companion object {
        // 静态初始化块
        init {
            println("父类--静态初始化块1")
        }

        // 静态变量      其实可以用普通的静态函数来代替，以后完善吧
        var p_StaticField: TestFather = TestFather()

        // 静态初始化块      
        init {
            println("父类--静态初始化块2")
        }
    }
}